// 文件路径: dbms/cluster/ClusterRequest.java
package com.dbms.cluster;

import java.io.Serializable;

/**
 * 用于集群节点之间通信的请求对象 (Request DTO)。
 * 这个对象是可序列化的，意味着它可以被转换成字节流以便在网络上传输。
 * 它封装了需要远程节点执行的所有信息。
 */
public class ClusterRequest implements Serializable {
    // 序列化版本ID，用于在反序列化时验证类的版本一致性
    private static final long serialVersionUID = 1L;

    // 需要在远程节点上执行的SQL语句
    private final String sql;
    // 记录最初发起此请求的用户是谁。这对于在远程节点上进行权限检查非常重要。
    private final String originalUser;

    /**
     * ClusterRequest 的构造函数。
     * @param sql 需要远程执行的SQL命令。
     * @param originalUser 发起请求的原始用户名。
     */
    public ClusterRequest(String sql, String originalUser) {
        this.sql = sql;
        this.originalUser = originalUser;
    }

    /**
     * 获取SQL语句。
     * @return SQL查询字符串。
     */
    public String getSql() {
        return sql;
    }

    /**
     * 获取原始用户名。
     * @return 原始用户名字符串。
     */
    public String getOriginalUser() {
        return originalUser;
    }
}